package fts.ftsdata.domain.impl;

import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;

import fts.ftsdata.domain.ITag;
import fts.ftsdata.domain.ITaggedFile;


public class TaggedFile implements ITaggedFile
{
	Integer idFile;
	
	Set<Tag> tags;
	Set<Tag> autoTags;
	Set<Tag> manualTags;
	String name;
	Boolean isAutoTagged;
	
	Set<Tag> getAutoTags()
	{
		return autoTags;
	}



	
	void setAutoTags(Set<Tag> autoTags)
	{
		this.autoTags = autoTags;
	}



	
	Set<Tag> getManualTags()
	{
		return manualTags;
	}



	
	void setManualTags(Set<Tag> manualTags)
	{
		this.manualTags = manualTags;
	}

	
	Integer getIdFile()
	{
		return idFile;
	}


	
	void setIdFile(Integer idFile)
	{
		this.idFile = idFile;
	}

	
	Set<Tag> getTags()
	{
		return tags;
	}

	
	void setTags(Set<Tag> tags)
	{
		this.tags = tags;
	}

	
	public Boolean getIsAutoTagged()
	{
		return isAutoTagged;
	}

	
	public void setIsAutoTagged(Boolean isAutoTagged)
	{
		this.isAutoTagged = isAutoTagged;
	}

	public String getName()
	{
		return name;
	}

	public void setName(String name)
	{
		this.name = name; 
	}

	public void addManualTag(ITag tag)
	{
		System.out.println(Thread.currentThread().getStackTrace()[1]);

		if(manualTags == null)
		{
			manualTags = new HashSet<Tag>();
		}
		if(!manualTags.contains(tag))
		{
			manualTags.add((Tag) tag);
		}
	}
	public void addAutoTag(ITag tag)
	{
		System.out.println(Thread.currentThread().getStackTrace()[1]);

		if(autoTags == null)
		{
			autoTags = new HashSet<Tag>();
		}
		if(!autoTags.contains(tag))
		{
			autoTags.add((Tag) tag);
		}
	}

	public Iterator<Tag> getAutoTagsIterator()
	{
		System.out.println(Thread.currentThread().getStackTrace()[1]);

		return autoTags.iterator();
	}

	public Iterator<Tag> getManualTagsIterator()
	{
		System.out.println(Thread.currentThread().getStackTrace()[1]);

		return manualTags.iterator();
	}

	


}
